
#include "trim.h"

#define MAX_CMD_NAME 10
#define MAX_CMD_COUNT 10

typedef struct
{
    uint8_t cmd[MAX_CMD_COUNT][MAX_CMD_NAME];

} Cmd_t;

Cmd_t cmd = {0};

/**
 * @brief 去除字符串中的空格，并将命令分开保存起来。
 * @param data 输入的字符串
 * @param len 输入字符串的长度
 * @return uint16_t 返回命令的数量
 */
uint16_t trim(uint8_t *data, uint16_t len)
{
    uint16_t index = 0, cmdIndex = 0;
    for (uint16_t i = 0; i < len; i++)
    {

        if (data[i] != ' ')
        {
            cmd.cmd[cmdIndex][index] = data[i];
            index++;
        }
        else
        {
            // 消除临界错误
            if (i - 1 < 0)
            {
                continue;
            }

            // 去除连续空格
            if (data[i - 1] == ' ')
            {
                continue;
            }
            cmdIndex++;
            index = 0;
        }
    }

    // 最后一个命令为空，则不计数
    if (strlen((char *)cmd.cmd[cmdIndex]) != 0)
    {
        cmdIndex++;
    }

    printf("cmdIndex:%d\n", cmdIndex);

    return cmdIndex;
}

int main(int argc, char *argv[])
{
    uint8_t *data = "cmdtest 5435  543  5 43 5   5";

    uint16_t cmdCount = 0;
    cmdCount = trim(data, strlen(data));

    for (uint16_t i = 0; i < cmdCount; i++)
    {
        printf("[%s]\n", cmd.cmd[i]);
    }
    return 0;
}
